package com.lagou.web.servlet;

import com.lagou.base.BaseServlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;

/**
 * @author TianSu
 * @creat 2021-05-02-16:24
 * 一个模块
 **/
@WebServlet("/test")
public class TestServlet extends BaseServlet {
    /**
     * 必须传递一个参数methodName=功能名
     * doget方法作为调度器，根据不同的请求功能，调用对应的方法
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取参数，要访问的方法名
        String methodName = req.getParameter("methodName");
        //判断，执行对应的方法
        if(methodName !=null){
            //通过反射优化代码
            try {
            //1、获取字节码文件对象 this=testServlet
            Class c=this.getClass();
            //2、根据传入的方法名，获取对应的方法对象 findByName
                Method method = c.getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
           //3、调用method对象的invoke方法，执行对应的功能
                method.invoke(this,req,resp);
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("请求功能不存在");
            }
        }
//        if("addCourse".equals(methodName)){addCourse(req,resp);}
//        else if("findByName".equals(methodName)){findByName(req,resp);}
//        else if("findByStatus".equals(methodName)){findByStatus(req,resp);}
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
    //添加课程
    public void addCourse(HttpServletRequest req,HttpServletResponse resp) {
        System.out.println("新建课程");
    }
    //根据课程名查询课程
    public void findByName(HttpServletRequest req,HttpServletResponse resp) {
        System.out.println("根据课程名查询课程");
    }

    //根据课程状态查询课程
    public void findByStatus(HttpServletRequest req,HttpServletResponse resp) {
        System.out.println("根据课程状态查询课程");
    }
}
